#ifndef KEY_H
#define KEY_H

enum Priority { BOTTOM = 0, VERYLOW, LOW, MEDIUM, HIGH, VERYHIGH, PRIMARY };

  // used in PriorityQueue
template<class T>
class Key {
    public:
        Key( T t, Priority p )
        :key( p ), data( t )
        {}

        Key()
        {}

        T getData() const { return data; }
        Priority getKey() const { return key; }

        bool operator == ( Key& ) const;
        bool operator >  ( Key& ) const;
        bool operator <  ( Key& ) const;
        bool operator >= ( Key& ) const;
        bool operator <= ( Key& ) const;
    private:
        Priority key;
        T data;
};

#endif // KEY_H
